// 基于 axios 封装一个我们自己的 'ajax'

// 1. 引入 axios
import axios from "axios";
import type { AxiosInstance } from "axios";

// import store from "../store";
// import router from "../router";

// 2. 基于 axios 创建一个我们自己的 'ajax'
const instance: AxiosInstance = axios.create({
    // 请求的基准地址
    // baseURL: "http://121.89.205.189:3000/admin",
    baseURL: "http://121.89.205.189:3000/api",
    // 请求超时时间
    timeout: 60000,
});

// 添加请求拦截器
instance.interceptors.request.use(
    function (config) {
        if (config.url !== "/admin/login") {
            // config.headers.token = store.state.userInfo.token;
        }

        return config;
    },
    function (error) {
        return Promise.reject(error);
    }
);

// 添加响应拦截器
instance.interceptors.response.use(
    function (response) {
        if (response.data.code === "10119") {
            // router.push("/login");
        }
        return response;
    },
    function (error) {
        return Promise.reject(error);
    }
);

interface IOptions {
    url: string;
    method?: string;
    data?: any;
}

// 3. 基于我们自己的 'ajax', 封装一个请求函数       当前的函数是给 api 目录下某些文件中的函数使用的
export default function ajax(options: IOptions) {
    const { url, method = "get", data = {} } = options;

    const reg = /^get$/i;

    if (reg.test(method)) {
        return instance.get(url, {
            params: data,
        });
    } else {
        return instance.post(url, data);
    }
}
